package com.szh.cloud.api.course.control;

import com.szh.cloud.api.course.entity.SearCourseEntity;
import com.szh.cloud.api.course.service.ApiCourseService;
import com.szh.cloud.common.entity.AjaxEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 课程控制器
 */
@RestController
@RequestMapping("/api/course")
public class ApiCourseController {

    @Autowired
    private ApiCourseService apiCourseService;

    /**
     * 分页查询课程列表
     * @param params 查询参数
     * @return 课程列表
     */
    @PostMapping("/queryCourseListByPage")
    public AjaxEntity queryCourseListByPage(@RequestBody Map<String, Object> params) {
        AjaxEntity ajaxEntity = new AjaxEntity();
        try {
            List<SearCourseEntity> courseList = apiCourseService.queryCourseListByPage(params);
            ajaxEntity.setSuccess(true);
            ajaxEntity.setData(courseList);
            ajaxEntity.setMsg("查询成功");
        } catch (Exception e) {
            ajaxEntity.setSuccess(false);
            ajaxEntity.setMsg("查询失败：" + e.getMessage());
        }
        return ajaxEntity;
    }

    /**
     * 查询课程总数
     * @param params 查询参数
     * @return 课程总数
     */
    @PostMapping("/queryCourseListTotal")
    public AjaxEntity queryCourseListTotal(@RequestBody Map<String, Object> params) {
        AjaxEntity ajaxEntity = new AjaxEntity();
        try {
            int total = apiCourseService.queryCourseListTotal(params);
            ajaxEntity.setSuccess(true);
            ajaxEntity.setData(total);
            ajaxEntity.setMsg("查询成功");
        } catch (Exception e) {
            ajaxEntity.setSuccess(false);
            ajaxEntity.setMsg("查询失败：" + e.getMessage());
        }
        return ajaxEntity;
    }

    /**
     * 根据UUID查询课程
     * @param courseUuid 课程UUID
     * @return 课程信息
     */
    @GetMapping("/queryCourseByUuid")
    public AjaxEntity queryCourseByUuid(@RequestParam String courseUuid) {
        AjaxEntity ajaxEntity = new AjaxEntity();
        try {
            SearCourseEntity course = apiCourseService.queryCourseByUuid(courseUuid);
            ajaxEntity.setSuccess(true);
            ajaxEntity.setData(course);
            ajaxEntity.setMsg("查询成功");
        } catch (Exception e) {
            ajaxEntity.setSuccess(false);
            ajaxEntity.setMsg("查询失败：" + e.getMessage());
        }
        return ajaxEntity;
    }

    /**
     * 添加课程
     * @param course 课程信息
     * @return 操作结果
     */
    @PostMapping("/addCourse")
    public AjaxEntity addCourse(@RequestBody SearCourseEntity course) {
        AjaxEntity ajaxEntity = new AjaxEntity();
        try {
            boolean result = apiCourseService.addCourse(course);
            if (result) {
                ajaxEntity.setSuccess(true);
                ajaxEntity.setMsg("添加成功");
            } else {
                ajaxEntity.setSuccess(false);
                ajaxEntity.setMsg("添加失败");
            }
        } catch (Exception e) {
            ajaxEntity.setSuccess(false);
            ajaxEntity.setMsg("添加失败：" + e.getMessage());
        }
        return ajaxEntity;
    }

    /**
     * 更新课程
     * @param course 课程信息
     * @return 操作结果
     */
    @PostMapping("/updateCourse")
    public AjaxEntity updateCourse(@RequestBody SearCourseEntity course) {
        AjaxEntity ajaxEntity = new AjaxEntity();
        try {
            boolean result = apiCourseService.updateCourse(course);
            if (result) {
                ajaxEntity.setSuccess(true);
                ajaxEntity.setMsg("更新成功");
            } else {
                ajaxEntity.setSuccess(false);
                ajaxEntity.setMsg("更新失败");
            }
        } catch (Exception e) {
            ajaxEntity.setSuccess(false);
            ajaxEntity.setMsg("更新失败：" + e.getMessage());
        }
        return ajaxEntity;
    }

    /**
     * 删除课程
     * @param courseUuids 课程UUID列表
     * @return 操作结果
     */
    @PostMapping("/deleteCourse")
    public AjaxEntity deleteCourse(@RequestBody List<String> courseUuids) {
        AjaxEntity ajaxEntity = new AjaxEntity();
        try {
            boolean result = apiCourseService.deleteCourse(courseUuids);
            if (result) {
                ajaxEntity.setSuccess(true);
                ajaxEntity.setMsg("删除成功");
            } else {
                ajaxEntity.setSuccess(false);
                ajaxEntity.setMsg("删除失败");
            }
        } catch (Exception e) {
            ajaxEntity.setSuccess(false);
            ajaxEntity.setMsg("删除失败：" + e.getMessage());
        }
        return ajaxEntity;
    }

    /**
     * 根据班级UUID查询关联的课程
     * @param classUuid 班级UUID
     * @return 课程列表
     */
    @GetMapping("/queryCoursesByClassUuid")
    public AjaxEntity queryCoursesByClassUuid(@RequestParam String classUuid) {
        AjaxEntity ajaxEntity = new AjaxEntity();
        try {
            List<SearCourseEntity> courseList = apiCourseService.queryCoursesByClassUuid(classUuid);
            ajaxEntity.setSuccess(true);
            ajaxEntity.setData(courseList);
            ajaxEntity.setMsg("查询成功");
        } catch (Exception e) {
            ajaxEntity.setSuccess(false);
            ajaxEntity.setMsg("查询失败：" + e.getMessage());
        }
        return ajaxEntity;
    }
}
